package ${packageName}.service;

import java.util.List;
import java.util.Map;

import ${packageName}.entity.${table.className}Entity;

public interface ${table.className}Service{

	/**
     * 新增
     *
     * @param ${table.className?uncap_first} 实体
     * @return Long
     */
    Long insert${table.className}(${table.className}Entity ${table.className?uncap_first});

    /**
     * 更新
     *
     * @param ${table.className?uncap_first} 实体
     */
    void update${table.className}(${table.className}Entity ${table.className?uncap_first});

    /**
     * 根据条件更新
     *
     * @param ${table.className?uncap_first} 实体
     */
    void update${table.className}ByExample(${table.className}Entity ${table.className?uncap_first}, SqlCriteria sqlCriteria);

    /**
     * 保存
     *
     * @param ${table.className?uncap_first} 实体
     */
    void save${table.className}(${table.className}Entity ${table.className?uncap_first});

    /**
     * 根据条件查询
     *
     * @param sqlCriteria 查询条件
     * @return List<${table.className}Entity>
     */
    List<${table.className}Entity> query${table.className}List(SqlCriteria sqlCriteria);

    /**
     * 根据条件分页查询
     *
     * @param sqlCriteria 查询条件
     * @param pageNo 当前页
     * @param pageSize 页大小
     * @return Page<${table.className}Entity>
     */
    Page<${table.className}Entity> queryPage${table.className}(SqlCriteria sqlCriteria, int pageNo, int pageSize);

    /**
     * 批量插入
     *
     * @param ${table.className?uncap_first}s 实体集合
     */
    void insert${table.className}s(List<${table.className}Entity> ${table.className?uncap_first}s);

    /**
     * 批量更新
     *
     * @param ${table.className?uncap_first}s 实体集合
     */
    void update${table.className}s(List<${table.className}Entity> ${table.className?uncap_first}s);

    /**
     * 根据条件查询
     *
     * @param id id
     * @return List<${table.className}Entity>
     */
    public abstract ${table.className}Entity get${table.className}ById(String id);

    /**
     * 根据条件查询
     *
     * @param id id
     * @return Map<String,Object>
     */
    Map<String, Object> getMap${table.className}ById(String id);

    /**
     * 根据id删除
     *
     * @param id id
     * @return Map<String,Object>
     */
    void del${table.className}ById(String id);

    /**
     * 根据条件删除
     *
     * @param sqlCriteria 条件
     * @return Map<String,Object>
     */
    public abstract void del${table.className}ByExample(SqlCriteria sqlCriteria);

    /**
     * 根据条件统计数量
     *
     * @param id id
     * @return Long
     */
    public abstract Long count${table.className}(SqlCriteria sqlCriteria);

    /**
     * 是否存在
     * 
     * @param sqlCriteria 条件
     * @return boolean
     */
    public abstract boolean exists${table.className}(SqlCriteria sqlCriteria);

}